(defmacro defined [& var]
    `(try 
        (or 
            (boolean (resolve ~@var)) 
            (not (nil? (eval ~@var)))
        ) (catch Exception e# false)
    )
)

(println "getDecimal")
(if (defined 'getDecimal)
	(throw (Exception. "getDecimal already defined!"))
)
(def getDecimal putDecimal)
(def getDecimalType (class getDecimal))
(println getDecimalType)
(println getDecimal)
(if-not (= getDecimalType Double)
	(throw (Exception. "getDecimal not Double!"))
)

(println "getDecimalVector")
(if (defined 'getDecimalVector)
	(throw (Exception. "getDecimalVector already defined!"))
)
(def getDecimalVector putDecimalVector)
(def getDecimalVectorType (class (get getDecimalVector 0)))
(println getDecimalVectorType)
(println getDecimalVector)
(if-not (= getDecimalVectorType Double)
	(throw (Exception. "getDecimalVector not Double!"))
)

(println "getDecimalVectorAsList")
(if (defined 'getDecimalVectorAsList)
	(throw (Exception. "getDecimalVectorAsList already defined!"))
)
(def getDecimalVectorAsList putDecimalVectorAsList)
(def getDecimalVectorAsListType (class (get getDecimalVectorAsList 0)))
(println getDecimalVectorAsListType)
(println getDecimalVectorAsList)
(if-not (= getDecimalVectorAsListType Double)
	(throw (Exception. "getDecimalVectorAsList not Double!"))
)

(println "getDecimalMatrix")
(if (defined 'getDecimalMatrix)
	(throw (Exception. "getDecimalMatrix already defined!"))
)
(def getDecimalMatrix putDecimalMatrix)
(def getDecimalMatrixType (class (get (get getDecimalMatrix 0) 0)))
(println getDecimalMatrixType)
(println getDecimalMatrix)
(if-not (= getDecimalMatrixType Double)
	(throw (Exception. "getDecimalMatrix not Double!"))
)

(println "getDecimalMatrixAsList")
(if (defined 'getDecimalMatrixAsList)
	(throw (Exception. "getDecimalMatrixAsList already defined!"))
)
(def getDecimalMatrixAsList putDecimalMatrixAsList)
(def getDecimalMatrixAsListType (class (get (get getDecimalMatrixAsList 0) 0)))
(println getDecimalMatrixAsListType)
(println getDecimalMatrixAsList)
(if-not (= getDecimalMatrixAsListType Double)
	(throw (Exception. "getDecimalMatrixAsList not Double!"))
)
